home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / areuh.tar / areuh / doc / areuh.doc next >
Text File  |  1990-10-10  |  10KB  |  364 lines

  1.  
  2.           ASSEMBLEUR / EDITEUR DE LIENS
  3.                    POUR LE HP71
  4.  
  5.  
  6.  
  7. I - PRINCIPE
  8.  
  9.  
  10. A: Presentation
  11.  
  12. Le  systeme  de  developpement  pour HP71 que nous
  13. presentons ici est base sur un  assembleur  et  un
  14. editeur de liens ecrits en Langage C.
  15.  
  16. Ce  systeme  fonctionne a l'heure actuelle sur des
  17. ordinateurs differents :
  18.  
  19. - Les ordinateurs fonctionnant sous systeme  HP-UX
  20. en particulier, et sous systeme Unix en general.
  21.  
  22. -  les  ordinateurs  Atari  520  et  1040  ST sous
  23. systeme d'exploitation TOS.
  24.  
  25. - une adaptation est en cours pour l'ordinateur HP
  26. Vectra et autres IBM PC sous systeme MS-DOS.
  27.  
  28. Tous  nos efforts se sont portes vers la reduction
  29. des   temps   d'assemblage.    Voir   les    temps
  30. d'execution   donnes   en  exemple  pour  plus  de
  31. details.
  32.  
  33.  
  34. B: Introduction a l'assembleur
  35.  
  36. L'assembleur a deux modes de fonctionnement :
  37.  
  38. Le mode "assemblage complet", qui  permet  d'avoir
  39. la compatibilite avec le "machin" (l'assembleur du
  40. module  Forth).   En   particulier,   toutes   les
  41. macro-operations  de generation de fichiers lex ou
  42. bin sont supportees.
  43.  
  44. Le  mode  "assemblage   separe"   permet   de   se
  45. rapprocher  des  conditions de travail de l'equipe
  46. de  developpement  du  HP71  aux  laboratoires  de
  47. Corvallis (OR 97330) en autorisant l'assemblage de
  48. modules separes, et leur reunion en  seul  fichier
  49. par l'intermediaire de l'editeur de liens.
  50.  
  51.  
  52. C: Avantages et inconvenients
  53.  
  54. Parmi   les  nombreux  avantages  que  procure  ce
  55. systeme, nous pouvons citer :
  56.  
  57. Utilisation des points d'entree HP  sans  avoir  a
  58. les  declarer  explicitement  par une operation du
  59. type EQU.
  60.  
  61. Edition  d'une  table  des   references   croisees
  62. donnant  pour chaque symbole le nom, la valeur, la
  63. ligne ou il est declare et les lignes  ou  il  est
  64. utilise.
  65.  
  66. Introduction   de  nouveaux  operateurs  dans  les
  67. expressions,  et  possibilite   d'introduire   des
  68. valeurs en binaire.
  69.  
  70. Les  noms des labels sont maintenant significatifs
  71. sur 12 caracteres.
  72.  
  73. Quant   aux   inconvenients,   il    manque    les
  74. pseudo-operations  FORTH,  WORD et WORDI. Et, bien
  75. sur, il faut un "gros" ordinateur.
  76.  
  77.  
  78. D: Principe de l'assemblage separe
  79.  
  80. L'assemblage d'un fichier en  modules  separes  se
  81. fait en deux phases.
  82.  
  83. IL   faut  d'abord  assembler  tous  les  fichiers
  84. (modules) constituant le source. Ensuite, il  faut
  85. proceder  a  l'edition de liens, qui rassemble ces
  86. modules en un seul fichier.
  87.  
  88. Si il s'avere necessaire de modifier une partie du
  89. texte  source, il suffit seulement de re-assembler
  90. le  module  contenant  ce  texte,  et  de  refaire
  91. l'edition de liens. Le gain de temps est enorme.
  92.  
  93. Cette   gestion   modulaire  permet  egalement  un
  94. traitement plus efficace des  labels.   Un  module
  95. peut  appeler  une  routine  ecrite  dans un autre
  96. module a partir du moment ou le label est  precede
  97. d'un  signe '=' dans les modules concernes. Ceci a
  98. pour role de declarer le label  externe  (dans  le
  99. module  appelant)  ou public (dans le module ou le
  100. label est declare) et accessible a tous.  Ce  sont
  101. les labels globaux.
  102.  
  103. A   cette  categorie  s'ajoute  celle  des  labels
  104. locaux. Ils ne comportent pas de signe '=', et des
  105. modules  peuvent  avoir des labels portant le meme
  106. nom.  Ceci permet d'avoir, par exemple,  plusieurs
  107. labels  "argerr" dans des modules differents, sans
  108. causer le moindre conflit.
  109.  
  110. C'est le meme systeme que celui employe par HP, et
  111. decrit  dans  les  IDS  Vol.  I  (ch. 16). Seul ce
  112. systeme  permet   le   developpement   de   grands
  113. programmes en assembleur.
  114.  
  115.  
  116.  
  117. II - DIFFERENCES AVEC LE "MACHIN"
  118.  
  119.  
  120. A: Selection du mode
  121.  
  122. La  selection  du  mode  d'assemblage  (complet ou
  123. separe) est faite par la presence de la macro  LEX
  124. ou BIN en premiere ligne du fichier source.
  125.  
  126. B: Majuscules / Minuscules
  127.  
  128. Mis a part les labels, tous les op-codes et toutes
  129. les  expressions  sont  compris  aussi   bien   en
  130. majuscules qu'en minuscules.
  131.  
  132. C: Macro-operation interdites
  133.  
  134. En  assemblage  separe,  les  pseudo-operations de
  135. generation de fichiers LEX ou BIN sont interdites.
  136. Ainsi,  LEX,  ID,  MSG,  POLL, ENTRY, CHAR, TOKEN,
  137. KEY, ENDTXT, BIN et  CHAIN  sont  interdites  hors
  138. d'un  assemblage  complet.   On  exerce  ainsi  un
  139. controle plus precis sur la generation du code.
  140.  
  141. Par ailleurs, les macro FORTH, WORD et WORDI  sont
  142. interdites.
  143.  
  144. Seule  la  premiere utilisation de TITLE est prise
  145. en compte.
  146.  
  147. D: Macro-operations ajoutees
  148.  
  149. En  premier  lieu,  il  y a RDSYMB (ReaD SYMBols).
  150. Elle permet de charger un  fichier  contenant  des
  151. points d'entree sans avoir a attendre l'edition de
  152. liens. Par exemple, en  assemblage  complet,  ceci
  153. permet  d'avoir  les points d'entree supportes par
  154. HP (fichier "hp71.ep"). La syntaxe est :
  155.  
  156.        RDSYMB <fichier>
  157.  
  158.  
  159. Ensuite,  nous  avons  l'assemblage  conditionnel.
  160. Par exemple, si nous avons :
  161.  
  162. AREUH  EQU    1
  163.  
  164.        IF     AREUH
  165.        P=P+1
  166.        RTN
  167.        ELSE
  168.        ASRB
  169.        C+P+1
  170.        ENDIF
  171.  
  172. Seul le code P=P+1 et RTN sera assemble.
  173.  
  174. Inversement,  si  AREUH avait ete declare avec une
  175. valeur nulle, le code ASRB  et  C+P+1  aurait  ete
  176. assemble.  Ceci  permet  de  gerer  simplement des
  177. versions differents d'un meme programme  (versions
  178. de  mise  au point).  Attention cependant :  il ne
  179. peut y avoir  imbrication  d'une  telle  structure
  180. conditionnelle.
  181.  
  182. E: Opcodes ajoutes
  183.  
  184. D0=HEX  et  D1=HEX  (presents, mais non documentes
  185. dans le "machin") fonctionnent a merveille.
  186.  
  187. LC(6) et CON(6) (utilises par HP) sont presents.
  188.  
  189. F: Valeurs numeriques
  190.  
  191. Les   valeurs   numeriques   calculees   dans  les
  192. expressions,   ou   renvoyees   par   des   labels
  193. comportent  six  chiffres hexadecimaux et non cinq
  194. comme dans le "machin". Comme dans les IDS.
  195.  
  196. En revanche, les valeurs affichees dans les tables
  197. de  symboles  le sont sur cinq chiffres seulement.
  198. Cette limitation ne concerne  que  l'affichage  et
  199. non  le  stockage  interne.  Ceci  est  conforme a
  200. l'affichage fourni par l'assembleur des IDS, et  a
  201. ete  conserve en raison de l'habitude acquise a la
  202. lecture des adresses du HP71.
  203.  
  204. G: Les Expressions
  205.  
  206. Les  expressions  peuvent  contenir des labels, la
  207. valeur du compteur ordinal (PC), des constantes et
  208. des  operateurs.   Il  n'y  a pas de limitation du
  209. niveau d'imbrication des parentheses.
  210.  
  211. Maintenant,  les  labels sont significatifs sur 12
  212. caracteres.
  213.  
  214. Le   symbole  '*'  (en  position  d'operande)  est
  215. considere comme la  valeur  du  compteur  ordinal.
  216. Dans  le  cas  d'une  compilation  separee,  cette
  217. valeur est la valeur reelle, tenant compte  de  la
  218. position du module dans le fichier complet.
  219.  
  220. Les constantes de valeur superieure a six chiffres
  221. hexadecimaux sont tronquees.
  222.  
  223. Les constantes Ascii sont delimitees soit par  des
  224. apostrophes ('), soit par des anti-slash (\).
  225.  
  226. Un  nouveau  type  de  constante est ajoutee : les
  227. constantes binaires. Elles doivent etre  precedees
  228. d'un signe '%', comme dans :  %01110001
  229.  
  230. Les   operateurs  :   nous  en  donnons  la  liste
  231. complete, par ordre de priorite decroissante.  Les
  232. operateurs de meme priorite sont evalues de gauche
  233. a droite.
  234.  
  235. ~ (*256+)               ^  (puissance)
  236. - (moins  unaire)       ` (complement  a  1)
  237. & (et logique)          ! (ou logique)
  238. * (multiplication)      / (division  entiere)
  239. + (addition)            - (soustraction)
  240.  
  241.  
  242. H: FiLeNd
  243.  
  244. Le  label  FiLeNd est ajoute systematiquement a la
  245. fin de chaque fichier ou module assemble.
  246.  
  247. En outre, le label  global  "=FiLeNd"  est  ajoute
  248. automatiquement   en   fin   de  fichier  lors  de
  249. l'edition de liens pour l'assemblage separe.
  250.  
  251.  
  252.  
  253. III - MODE D'EMPLOI DES PROGRAMMES
  254.  
  255.  
  256. Les  deux  programmes "aas" et "ald" admettent les
  257. memes options.
  258.  
  259. -o
  260.  
  261. Specifie  le   nom   du   fichier   resultant   de
  262. l'assemblage ou de l'edition de liens.
  263.  
  264. -a <fichier>
  265.  
  266. Demande  l'impression d'un listing d'assemblage ou
  267. d'edition de liens. Le listing est envoye dans  le
  268. fichier specifie.
  269.  
  270. -A
  271.  
  272. Demande  l'impression d'un listing d'assemblage ou
  273. d'edition de  liens.   Le  listing  est  envoye  a
  274. l'affichage (ou stdout sur les systemes Unix).
  275.  
  276. -l <longueur de page>
  277.  
  278. Specifie la longueur physique des pages, en nombre
  279. de lignes.  La longueur du texte  sera  inferieure
  280. de 6 lignes.
  281.  
  282. -x
  283.  
  284. Demande  l'impression  d'une  table des references
  285. croisees.
  286.  
  287. -p
  288.  
  289. Active la saisie interactive des options  decrites
  290. precedemment.    Notons   que   ne   donner  aucun
  291. parametre active implicitement cette option.
  292.  
  293.  
  294. Pour aas,  il  faut  ensuite  fournir  le  nom  du
  295. fichier source.
  296.  
  297. Pour  ald,  il  faut  fournir les noms de tous les
  298. modules.
  299.  
  300.  
  301. Par defaut, le fichier genere a  pour  nom  "lex".
  302. Les   fichiers  source  ont  ".as"  comme  suffixe
  303. (extension), et les fichiers intermediaires (entre
  304. l'assembleur  et  l'editeur  de  liens)  ont ".ao"
  305. comme  suffixe.   En   general,   il   n'est   pas
  306. necessaire d'indiquer ces extensions.
  307.  
  308.  
  309.  
  310. IV - EXEMPLES
  311.  
  312.  
  313. Assembler  le  fichier f1.as (qui commence par une
  314. macro LEX), et fichier assemble dans "lex" :
  315.  
  316. aas f1
  317.  
  318. Assembler   le   fichier   f1.as   avec   listing,
  319. references  croisees  dans  le  fichier "list", et
  320. fichier resultat dans "lex" :
  321.  
  322. aas -xalist f1
  323.  
  324. aas -x -a list f1
  325.  
  326. Meme exemple que precedemment avec une longueur de
  327. page de 66 lignes (papier 11") :
  328.  
  329. aas -xalist -l66 f1
  330.  
  331. Assembler  le  fichier  f1.as,  avec resultat dans
  332. "toto", avec parametrage interactif :
  333.  
  334. aas
  335.   puis entrer "f1"
  336.   puis entrer "toto"
  337.   puis entrer [RETURN]
  338.  
  339.  
  340.  
  341.  
  342. Les fichiers f1.as, f2.as et f3.as continennent le
  343. source d'un fichier lex.
  344.  
  345. Assemblage des trois fichiers :
  346.  
  347. aas f1
  348.  
  349. aas f2
  350.  
  351. aas f3
  352.  
  353. Edition de liens des fichiers f1, f2 et f3  (fi.ao
  354. pour  i=1..3),  avec demande d'un listing et d'une
  355. table des  references  croisees  dans  le  fichier
  356. "list", et fichier assemble nomme "totolex".
  357.  
  358. ald -xalist -ototolex f1 f2 f3
  359.  
  360.  
  361.  
  362.         Pierre David (PC37, SIG1, CHHU616)
  363.     Janick Taillandier (PC246, SIG6, CHHU178)
  364.